package com.jyw.business.ins.domain.vo.web;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.jyw.business.ins.domain.InsTaskRectify;
import com.jyw.common.annotation.Conversion;
import com.jyw.common.enums.ConversionType;
import com.jyw.common.utils.bean.BeanUtils;
import com.jyw.system.domain.vo.SimpleFileVo;
import com.jyw.system.utils.FileUtils;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.FieldNameConstants;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;

/**
 * @author 沈峻
 * @ClassName RectifyDetailVo
 * @Description 整改详情响应
 * @Date 2023/10/8 11:27
 **/
@Data
@ApiModel("整改详情响应")
@FieldNameConstants
@NoArgsConstructor
public class RectifyDetailVo {

    /** 主键 */
    @ApiModelProperty("主键")
    private Long id;

    /** 任务ID */
    @ApiModelProperty("任务ID")
    private Long taskId;

    /** 整改责任人ID */
    @ApiModelProperty("整改责任人ID")
    @Conversion(value = ConversionType.USER,name = Fields.rectifyUserName)
    private Long rectifyUserId;

    @ApiModelProperty("整改责任人名称")
    private String rectifyUserName;

    /** 整改开始日期 */
    @ApiModelProperty("整改开始日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate rectifyStartDate;

    /** 整改结束日期 */
    @ApiModelProperty("整改结束日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate rectifyEndDate;

    /** 整改要求及建议 */
    @ApiModelProperty("整改要求及建议")
    private String rectifyOpinion;

    @ApiModelProperty("限期整改录音")
    private String soundFile;

    /** 整改时间 */
    @ApiModelProperty("整改时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date rectifyTime;

    /** 整改结果说明 */
    @ApiModelProperty("整改结果说明")
    private String resultElaborate;

    /** 整改过程照片（附件ID） */
    @ApiModelProperty("整改过程照片")
    private List<SimpleFileVo> rectifyPhotos;

    /** 录音文件（附件） */
    @ApiModelProperty("整改结果录音文件（附件）")
    private String rectifySoundFile;

    @ApiModelProperty("巡检对象名称")
    private String name;

    @ApiModelProperty("巡检对象编号")
    private String code;

    @ApiModelProperty("巡检内容")
    private List<TaskItemVo> taskItemList;

    @ApiModelProperty("整改状态 -1超时未整改 0待整改 1已整改")
    private Integer isRectify;

    @ApiModelProperty("转交记录")
    private List<InsTransmitRecordVO> transmitRecordList;

    public RectifyDetailVo(InsTaskRectify rectify, List<TaskItemVo> taskItemVos) {
        BeanUtils.copyProperties(rectify,this);
        if(rectify.getIsRectify()){
            setIsRectify(1);
        }else{
            setIsRectify(0);
        }
        setRectifyPhotos(FileUtils.IdToFile(rectify.getRectifyPhotos()));
        //超时未整改
        if(getIsRectify().equals(0)&&getRectifyEndDate().isBefore(LocalDate.now())){
            setIsRectify(-1);
        }

        setTaskItemList(taskItemVos);
    }

    public void setObjInfo(InsObjInfo objInfo) {
        setName(objInfo.getName());
        setCode(objInfo.getCode());
    }
}
